package com.example.blog_system_ssm.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class AppConfig implements WebMvcConfigurer {
    // @Configuration 表面当前类是一个配置类，被注解的类内部包含一个或者多个被 @Bean 注解的方法
    // 用户构建bean定义，初始化spring容器

    // @Bean注解：用于告诉方法，产生一个bean对象，交由spring管理，产生这个bean对象的方法spring只会调用一次
    // 随后spring将这个bean对象放在自己的IOC容器中

    @Bean
    public BCryptPasswordEncoder getBCryptPasswordEncoder(){
        return new BCryptPasswordEncoder();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        LoginInterceptor loginInterceptor=new LoginInterceptor();
        registry.addInterceptor(loginInterceptor)
                .addPathPatterns("/**")
                .excludePathPatterns("/css/**.css")
                .excludePathPatterns("/img/**")
                .excludePathPatterns("/js/**.js")
                .excludePathPatterns("/blog_login.html")
                .excludePathPatterns("/user/login")
                .excludePathPatterns("/user/loginMD")
                .excludePathPatterns("/register.html")
                .excludePathPatterns("/user/register");
    }

}
